// import Vue from 'vue'
import axios from 'axios'
import { VueAxios } from './axios'
// import { ACCESS_TOKEN } from '@/store/mutation-types'

// 创建 axios 实例
const service = axios.create({
  baseURL: process.env.NODE_ENV.includes('production') ? process.env.VUE_APP_requestUrl : '/api', // api base_url
  // baseURL: process.env.VUE_APP_requestUrl,
  // timeout: 10000 // 请求超时时间
})
const err = (error) => {
  // if (error.response) {
  //   const data = error.response.data
  //   const token = Vue.ls.get(ACCESS_TOKEN)
  //   if (error.response.status === 403) {
  //     notification.error({ message: 'Forbidden', description: data.message })
  //   }
  //   if (error.response.status === 401) {
  //     notification.error({ message: 'Unauthorized', description: 'Authorization verification failed' })
  //     if (token) {
  //       store.dispatch('Logout').then(() => {
  //         setTimeout(() => {
  //           window.location.reload()
  //         }, 1500)
  //       })
  //     }
  //   }
  // }
  return Promise.reject(error)
}

// request interceptor
// service.interceptors.request.use(config => {
//   const token = Vue.ls.get(ACCESS_TOKEN)
//   if (token) {
//     config.headers[ 'x-auth-token' ] = token // 让每个请求携带自定义 token 请根据实际情况自行修改
//   }
//   return config
// }, err)

// 响应拦截器
service.interceptors.response.use((response) => {
  // switch (response.status) {
  //   case 200: 
  //     if (response) {
  //       if (response.data.returnCode === 410) {
  //         notification.error({ message: '登录超时', description: '登录超时，请重新登录' })
  //         store.dispatch('Logout').then(() => {
  //           setTimeout(() => {
  //             window.location.reload()
  //           }, 1500)
  //         })
  //       } else if (response.data.returnCode === 401) {
  //         notification.error({ message: '无权限', description: response.data.message })
  //         throw response.data
  //       }
  //     }
  //     break
  //   case 203:
  //     notification.error({ message: '登录过期', description: '登录超时，请重新登录' })
  //     store.dispatch('Logout').then(() => {
  //       setTimeout(() => {
  //         window.location.reload()
  //       }, 1500)
  //     })
  //     break
  //   case 500:
  //     router.push('/500')
  //   default:
  //     router.push('/500')

  // }
  return response.data
}, err)

function api ({ method, data, contentType = 'json' } = {}, url) {
  if (method) {
    return service.get(url, {
      params: data
    })
  } else {
    var contentTypeObj = {
      urlencoded: 'application/x-www-form-urlencoded',
      json: 'application/json',
      formData: 'multipart/form-data'
    }

    const config = {
      headers: {
        'Content-Type': contentTypeObj[contentType]
      }
    }
    return service.post(url, data, config)
  }
}

const installer = {
  vm: {},
  install (Vue, router = {}) {
    Vue.use(VueAxios, router, service)
  }
}

export {
  installer as VueAxios,
  api as axios
}
